/*
 * Copyright 2018-10-1 20:47:06 The JA-SIG Collaborative. All rights reserved.
 * distributed with thi file and available online at
 */
package com.lap.scp.erp.domain;

import java.util.Date;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.springframework.format.annotation.DateTimeFormat;

import com.lap.scd.commons.domain.IntegerDO;

/**
 * <pre>
 *  其他成本，其中一些通用字段在ModelDO和BaseDO里面，该对象基本上只用于数据保存使用。
 *   对应的表名：payment
 *
 *	如果说界面业务复杂，有特别需要，需要在额外定义Bean对象来接收界面数据。
 * </pre>
 * 
 * @author 劳水生 Exp
 * @Date 2018-10-1 20:47:06
 * @since 2.0.0
 */
public class PaymentDO extends IntegerDO {
	private static final long serialVersionUID = 7672193518225139811L;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	contract_id
	 * 备注:
	 *  合同ID;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer contractId;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	type
	 * 备注:
	 *  支出类型，0-材料支出，10-人工支出，20-其他支出;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer type;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	name
	 * 备注:
	 *  支出项目名，人名就是姓名，项目就是项目名;字段的长度:128,可否为空:是。
	 * </pre>
	 */
	private String name;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	buy_date
	 * 备注:
	 *  支出日期;字段的长度:,可否为空:是。
	 * </pre>
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date buyDate;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	amount
	 * 备注:
	 *  金额，单位：分;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer amount;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	remark
	 * 备注:
	 *  备注;字段的长度:256,可否为空:否。
	 * </pre>
	 */
	private String remark;

	/**
	 * 合同信息
	 */
	private ContractDO contractDO;

	// 页面处理字段
	/**
	 * 标识使用，处理逻辑需要
	 */
	private String sign;
	/**
	 * 支出金额
	 */
	private Double pageAmount;

	/**
	 * @return 合同ID
	 */
	public void setContractId(Integer contractId) {
		this.contractId = contractId;
	}

	/**
	 * 合同ID
	 * 
	 * @param contractId
	 */
	public Integer getContractId() {
		return contractId;
	}

	/**
	 * @return 支出类型，0-材料支出，10-人工支出，20-其他支出
	 */
	public void setType(Integer type) {
		this.type = type;
	}

	/**
	 * 支出类型，0-材料支出，10-人工支出，20-其他支出
	 * 
	 * @param type
	 */
	public Integer getType() {
		return type;
	}

	/**
	 * @return 支出项目名，人名就是姓名，项目就是项目名
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 支出项目名，人名就是姓名，项目就是项目名
	 * 
	 * @param name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @return 支出日期
	 */
	public void setBuyDate(Date buyDate) {
		this.buyDate = buyDate;
	}

	/**
	 * 支出日期
	 * 
	 * @param buyDate
	 */
	public Date getBuyDate() {
		return buyDate;
	}

	/**
	 * @return 金额，单位：分
	 */
	public void setAmount(Integer amount) {
		this.amount = amount;
	}

	/**
	 * 金额，单位：分
	 * 
	 * @param amount
	 */
	public Integer getAmount() {
		return amount;
	}

	/**
	 * @return 备注
	 */
	public void setRemark(String remark) {
		this.remark = remark;
	}

	/**
	 * 备注
	 * 
	 * @param remark
	 */
	public String getRemark() {
		return remark;
	}

	/**
	 * @return 页面金额
	 */
	public Double getPageAmount() {
		if (amount != null) {
			pageAmount = amount / 100.0;
		}
		return pageAmount;
	}

	/**
	 * 页面金额
	 * 
	 * @param pageAmount
	 */
	public void setPageAmount(Double pageAmount) {
		if (pageAmount != null) {
			this.amount = (int) Math.rint(pageAmount * 100.0);
		}
		this.pageAmount = pageAmount;
	}

	public ContractDO getContractDO() {
		return contractDO;
	}

	public void setContractDO(ContractDO contractDO) {
		this.contractDO = contractDO;
	}

	public String getSign() {
		return sign;
	}

	public void setSign(String sign) {
		this.sign = sign;
	}

	@Override
	public String toString() {
		return ReflectionToStringBuilder.toString(this);
	}

}
